package com.demo.adapter05.objectAdapter;

import com.demo.adapter05.Adaptee;
import com.demo.adapter05.Target;

/**
 * 适配器类，直接关联被适配类，同时实现标准接口
 *
 * 测试结果与上面的一致。从类图中我们也知道需要修改的只不过就是 Adapter 类的内部结构，
 * 即 Adapter 自身必须先拥有一个被适配类的对象，再把具体的特殊功能委托给这个对象来实现。
 * 使用对象适配器模式，可以使得 Adapter 类（适配类）根据传入的 Adaptee 对象达到适配多个
 * 不同被适配类的功能，当然，此时我们可以为多个被适配类提取出一个接口或抽象类。
 * 这样看起来的话，似乎对象适配器模式更加灵活一点。
  */
public class Adapter implements Target {
	/**
	 * 	直接关联被适配类
	 * 	与类适配器的区别
	 * 	直接关联相关对象，将被适配的类 关联在一块
 	 */
	private final Adaptee adaptee;
	
	// 可以通过构造函数传入具体需要适配的被适配类对象
	public Adapter (Adaptee adaptee) {
		this.adaptee = adaptee;
	}
	
	@Override
	public void request() {
		// 这里是使用委托的方式完成特殊功能
		this.adaptee.specificRequest();
	}
}
 